// 引入 Redis 客户端
const redisClient = require('./redisClient').client;

/**
 * 异步函数，从 Redis 中获取与给定键关联的所有字段和值。
 * 
 * @param {string} dataKey - 需要查询的 Redis 键。
 * @returns {Promise<object>} - 一个承诺，解析为与键关联的所有字段和值的对象。
 */
async function getAll(dataKey) {
    // 返回一个新的承诺
    return new Promise(function (resolve, reject) {
        // 使用 Redis 客户端的 hgetall 方法获取与键关联的所有字段和值
        redisClient.hgetall(dataKey, function (err, value) {
            try {
                // 如果没有值，则返回一个空对象
                if (!value) value = {};
                // 成功时，解析承诺
                resolve(value);
            } catch (e) {
                // 如果有错误，拒绝承诺
                reject(e);
            }
        });
    })
}

// 导出 getAll 函数，使其可以在其他模块中使用
module.exports = getAll;
